


/**
 * Função que irá buscar no servidor o conteúdo para ser inserido no corpo da Modal do bootstrap
 * 
 * @function showMessageAjax
 * @returns {void}
 */
function showMessageAjax(msg) 
{
    $("#modalSystem .modal-body").html(msg);
    $("#modalSystem").modal();
}


/**
 * Função que irá invalidar o servidor de acordo com um dos itens informados no formulário.
 * 
 * @param {object-jquery} btnInvInsc
 * @param {array} idSelecionados
 * @param {string} url
 * @param {string} acao
 * @returns {void}
 */
function invalidarInscricao(btnInvInsc, idSelecionados, url, acao) 
{
    // Verifica se pelo menos um checkbox foi marcado e pega os ID's
    $("#tblListaInscricoesParaValidacao").find("input:checkbox:checked").each(function(ind, el) {
        idSelecionados.push($(el).attr('value'));
    });

    // Verifica se pelo menos 1 item foi selecionado
    if (idSelecionados.length >= 1 && acao !== "") {
        // Desativa o botão, esconde a mensagem de erro, caso haja
        btnInvInsc.button('loading');
        $("#alert-erro-form").hide();

        // Envia as informações para o servidor.
        $.post(url, {"selecionados": idSelecionados, "acao": acao}, function(r) {
            if (r.type === 'success') {
                showMessageAjax(r.flashMsg);
                
                for (var i in idSelecionados) {
                    $("#linha_"+idSelecionados[i] +" td:eq(5)").text( $("#co_mot_invalida :selected").text() );
                }
            } else {
                showMessageAjax(r.flashMsg);
            }

        }).done(function() {
            btnInvInsc.button('reset');   
        });
        
    } else {
        $("#alert-erro-form").show();
    }
}


/**
 * Função que irá ativar uma habilitação para um determinado candidato de acordo 
 * com o número da matrícula e o código da habilitação
 *
 * @param {object-jquery} btnInserir
 * @param {string} url
 * @param {object} dados
 * @returns {void} 
 */ 
function inserirHabilitacoes(btnInserir, url, dados) 
{
    if (dados.coHabilitacao != "") {
        // Desativa o botão, esconde a mensagem de erro, caso haja
        btnInserir.button('loading');
        $("#alert-erro-form").hide();
        
        // Envia as informações para o servidor e no retorno escreve na tela do usuário.
        $.post(url, dados, function(r) {
            if (r.type === 'success') {
                showMessageAjax(r.flashMsg);
                $("#tblHabilitacoesServidor tbody").append('<tr id="linha_'+ dados.coHabilitacao +'">'+ 
                                                               '<td class="primeiro">'+ dados.coHabilitacao +'</td>'+ 
                                                               '<td class="segundo">'+ dados.noHabilitacao +'</td>'+ 
                                                               '<td class="terceiro"><button type="button" class="btn btn-danger"><i class="icon-trash icon-white"></i></button></td>'+                            
                                                           '</tr>');
            } else {
                showMessageAjax(r.flashMsg);
            }

        }).done(function() {
            btnInserir.button('reset');   
        });
    } else {
        $("#alert-erro-form").show();
    }
}


function removerHabilitacao(url, dados) 
{
    // Envia as informações para o servidor e no retorno escreve na tela do usuário.
    $.post(url, dados, function(r) {
        if (r.type === 'success')
            $("#linha_"+ dados.coHabilitacao).remove();
        showMessageAjax(r.flashMsg);
    });
}

/**
 * Ocorre quando um usuário tentar cadastrar ou editar um recurso.
 * -- O Servidor irá verificar se o ID já existe e ira sobrescrever caso exista.
 * 
 * @returns {undefined}
 */
function enviarInformacaoRecurso() 
{
    
}

/**
 * Função que irá informar para o sistema se o candidato é ou não um PNE.
 * 
 * @param {string} url
 * @param {object} dados
 * @returns {void} 
 */
function statusPne(url, dados) 
{
    // Envia as informações para o servidor e no retorno escreve na tela do usuário.
    $.post(url, dados, function(r) {
        showMessageAjax(r.flashMsg);
    });
}


// Libera apenas o menu atual de visualização de conteúdo
$("document").ready(function() {
    $(".nav li a[href='/"+module+"/"+controller+"/"+action+"']").parent().parent().find('li').removeClass('hide').show();
});


// Mostra o conteúdo do menu lateral, quando clicado sobre um título.
$(".context .nav .nav-header").click(function() {
    $(this).nextAll().toggle();
});


// Função que será ativada quando houver click sobre um dos itens da paginação de conteúdo.
$(".pagination li a").click(function() {
    var link    = $(this).attr('href');
    var idform  = $(this).parents('div.resultado').prev('form').attr('id');
    
    // submete novamente as informações do formulário com a página correta.
    if (!$(this).parent('li').hasClass('disabled')) {
        $("#"+idform).attr('action', link).submit();
    }
    
    // Evitar que o link funcione
    return false;
});

// Autocomplete para o campo disciplina
$('input#disciplina').typeahead({
    source: function (query, process) {
        return $.get('/admin/inscricoes/complete-disciplina', {term: $("input#disciplina").val()}, function (r) {
            return process(r);
        });
    }
});

// Autocomplete para o campo habilitação
$('input#habilitacao').typeahead({
    source: function (query, process) {
        return $.get('/admin/habilitacoes/complete-habilitacao', {term: $("input#habilitacao").val()}, function (r) {
            return process(r);
        });
    }
});


/**
 * Função que irá invalidar os candidatos inscritos. O envio para o servidor deverá ser um array de números
 * inteiros. A validação deverá ser obrigatoriamente no servidor.
 */
$("#btnInvalidaInscricao").click(function() {
    var btnInvInsc      = $(this),
        idSelecionados  = new Array,
        url             = $(this).parents('form').attr('action'),
        acao            = $("#co_mot_invalida").val();
    
    invalidarInscricao(btnInvInsc, idSelecionados, url, acao);
});


//CLICK: quando for solicitado inserir habilitação
$("#btnInserirHabilitacao").click(function() {
    var btnAcao         = $(this),
        disciplina      = $("#habilitacao").val(),
        coHabilitacao   = disciplina.substr(0, disciplina.indexOf(" - ")),
        noHabilitacao   = disciplina.substr( disciplina.indexOf(" - ")+2, disciplina.length ),
        url             = $(this).parents('form').attr('action'),
        dados           = {'coHabilitacao' : coHabilitacao, 
                           'noHabilitacao' : noHabilitacao, 
                           'matricula' : $("#spanNuMatricula").text()};
    inserirHabilitacoes(btnAcao, url, dados);
});

//CLICK: quando for solicitado remover habilitação
$(".btnRemoverHabilitacao").click(function() {
    var coHabilitacao   = $(this).parents("tr").attr('id').replace("linha_", ""),
        url             = '/admin/habilitacoes/remover-habilitacao/',
        dados           = {'coHabilitacao'  : coHabilitacao,
                           'matricula'      : $("#spanNuMatricula").text()};
    removerHabilitacao(url, dados);
});

//CLICK: quando o admin informar se é ou não um candidato PNE
$("#informarPNE, #informarNaoPNE").click(function() {
    var url         = $(this).parents('form').attr('action'),
        acao        = $(this).attr('id') == 'informarPNE' ? 1 : 0,
        matricula   = $("#coMatriculaPne").text(),
        dados       = {"acao": acao, "matricula": matricula};
    statusPne(url, dados);
});

$("#tblRecursos td a").click(function() {
    var id          = $(this).parents('tr').find('td:eq(0)').text(),
        descricao   = $(this).parents('tr').find('td:eq(1)').text();
        
    $("#form_manter-recursos #codigo").val(id);
    $("#form_manter-recursos #descricao").val(descricao);
});